home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CU Amiga Super CD-ROM 1
/
CU Amiga Magazine CD-ROM Special Edition (1995)(EMAP Images)(GB)[Issue 1995-11].iso
/
Aminet
/
comm
/
cnet
/
ffish_sim10b.lha
/
FrFishSim1b
next >
Wrap
Text File
|
1993-02-21
|
26KB
|
891 lines
/*
Freshwater
Fishing Simulator V1.0b
By Matrix
of
>Genesis< BBS 804-887-3584
19200 Baud - 250 Megs - Wares
FOR USE ON REGISTERED CNET BBS'S ONLY
*/
/*Housekeeping **********************************************/
options results
signal on ioerr
signal on syntax
signal on error
/*Shortcuts *************************************************/
Ss=Sendstring
Tr=Transmit
Sf=Sendfile
path1="pfiles:fishing/files/" /* Data Path*/
path2="pfiles:fishing/users/" /* Data Path*/
path3="pfiles:fishing/lakemaps/" /* Data Path*/
path4="pfiles:fishing/lakedata/" /* Data Path*/
minutes="60" /*Max Minutes Per Session*/
BBS="Dragons Weyr" /*Your BBS Name*/
/*Main ******************************************************/
START:
logentry "Played Freshwater Fishing Simulator"
ss"cf"
news = "c9--------------------------------------------------------cf"
call HERALD
getuser 1;handle=result
news = "ca<<cb"||handle||"ca>>cb";call HERALD;news=""
Sf path1||"fish.intro";ss "cf"
ss "f1n1Loading Data..."
getuser 12;date=result
getuser 7;ans=result
temp=length(ans);gamestart=left(ans,temp-1)
call CHECKSTATS
call HERALD
call LOADTOURNY
call LOADLARGEST
call DATA;ss"Done!"
call TIMECHECK
tr "n2You Have "||minleft||" minutes for this session"
Ss "n2 Do You Want Instructions? [No] >"
Getchar
ans=upper(result)
if ans="#" then signal DROP
if ans="Y" then do;Ss " Yes";Sf path1||"fish.doc";ss "cf";end
if ans~="Y" then do;Ss " No";end
signal LAKESELECT
SAVEUSER:
call open(users,path2||handle, "W")
call writeln(users,date)
call writeln(users,minleft)
call close (users)
return
CHECKSTATS:
gameend=gamestart-minutes
if gameend <= 0 then gameend = 0
if exists(path2||handle) then do;
signal off error
call open(users,path2||handle, "R")
lastplay=readln(users)
timetogo=readln(users)
call close (users)
signal on error
if left(lastplay,3)=left(date,3) then do;
if timetogo <= 0 then do;
tr "f1n2You Have Played Too Long Today!n1 Press A Key >>g0"
exit;end
gameend=gamestart-timetogo
end
end
return
TIMECHECK:
getuser 7;ans=result
temp=length(ans);ans=left(ans,temp-1)
minleft=ans-gameend
if minleft <= 0 then do;
tr "f1n3 The sun has set and it's time to head home!!!"
tr "n1 Thanks for playing Freshwater Fishing Simulator!"
signal QUIT;end
return
LAKESELECT:
call TIMECHECK
Sf path1||"fish.lakes";ss "cf"
Ss "Which lake are you interested in? >"
receive;lake=result
if left(lake,1) = "#" then signal DROP
if lake = "" then signal LAKESELECT
if exists(path4||"lakeData"||lake) then do;
call DISPLAY;call HOT
ss "n2cfDo You Want To Fish This Lake? [No] >"
getchar
ans=upper(result)
if ans="#" then signal DROP
if ans="Y" then do;
news="caPacked Up And Going To: cb"||Display.1||"ca"
call HERALD;call LOADLAKE
x = random(1,2,time('s'))
wx=wx.x;cwx=x
signal FISHING;end
signal LAKESELECT
end
if ~exists(path4||"lakeData"||lake) then do;
tr "That Lake File Does Not Exist";end
signal LAKESELECT
FISHING:
call TIMECHECK
tr "f1n4 Fishing Menun2"
tr " cb[caGcb]cao Fishing"
tr " cb[caCcb]cahange Lakes"
tr " cb[caScb]caee Largest Fish Caught"
tr " cb[caFcb]caisherman's Herald"
tr " cb[caWcb]caeekly Tournament Update"
tr " cb[caDcb]caisplay Lake Info"
tr " cb[caIcb]canstructions"
tr " cb[caQcb]cauit to BBScf"
ss "n2 cbWhat Do You Want To Do? ["||minleft||"]>cf"
getchar
ans=upper(result)
if ans="#" then signal DROP
ss ans
if ans="G" then do;signal GOFISHMENU;end
if ans="S" then do;call DISLARGEST;ss"n1cfPress any Key >> g1";end
if ans="F" then do;
ss "f1";sf path1||"fish.news";ss "n1cfPress a Key>> g1f1";end
if ans="W" then call DISTOURNY
if ans="D" then do
call DISPLAY;ss "n2cfPress a Key>>g1q1";end
if ans="Q" then signal QUIT
if ans="I" then do;
ss "f1";sf path1||"fish.doc";end
if ans="C" then do; call LOSEIT;signal LAKESELECT;end
signal FISHING
LOSEIT:
call PRESORT
call SAVETOURNY
if record=1 then do;
call SAVELARGE;end
ref=0;record=0;lure="None";chance=50;points=0;Tfish=0
do x = 1 to 15;wellfish.x="None";welllbs.x=0;welloz.x=0;wellpoints.x=0;end
return
GOFISHMENU:
call TIMECHECK
bufferflush
if ref=0 then call REFRESH
tr "f0n5n5cf"
tr " "
tr " "
tr " "
tr " [C]ast c9Boat Movementcf "
tr " [D]isplay Lake Info c98cf "
tr " [P]ick Lure c94cf c96cf "
tr " [L]ook In Livewell c92cf "
tr " [R]efesh screen [KeyPad] "
tr " [Q]uit to Main "
tr " "
ss "7HcdCommand ["||minleft||"]> h7cf"
GOFISH:
getchar
ans=upper(result)
if ans="#" then signal DROP
if ans="C" then do
if depth=7 then do
tr "f1n2 NOTICE"
tr "n1 NO FISHING FROM THE DOCK!w3";call REFRESH;signal GOFISHMENU;end
call BOAT;signal CAST;end
if ans="D" then do;
call DISPLAY;ss"Press a Key>>g1";call REFRESH;signal GOFISHMENU;end
if ans="P" then do;call PICKLURE;signal GOFISHMENU;end
if ans="L" then do;call LIVEWELL;signal GOFISHMENU;end
if ans="Q" then do; ref=0;signal FISHING;end
if ans="R" then do;call REFRESH;signal GOFISHMENU;end
if ans="8" | ans="4" | ans="6" | ans="2" then call MOVE
signal GOFISH
PICKLURE:
call TIMECHECK
ss "f0n5n7"
tr " Operating "
tr " Depths: "
tr " 1. Shallow Crankbait 4'-8' "
tr " 2. Deep Crankbait 11'-17' "
tr " 3. Slim Minnow 2'-4' "
tr " 4. Bottom Bait Varies "
tr " 5. Surface Plug 0' "
tr " 6. Spinner Bait Varies "
ss " Select A Lure ["||minleft||"]> "
getchar
ans=upper(result)
if ans="#" then signal DROP
if ans<1 | ans>6 then signal PICKLURE
lure=lure.ans;lure2=ans;ans=""
ss "1Hcf"lure
if lure2=1 then do;
min=4;max=8;end
if lure2=2 then do;
min=11;max=17;end
if lure2=3 then do;
min=2;max=4;end
if lure2=5 then do;
min=0;max=0;end
if lure2=4 | lure2=6 then do;
min=0;max=depth;end
return
LIVEWELL:
t=5
tr "f1n1 cb Looking In The Livewell.....n1"
tr " caFish Type Weight Points"
do x = 1 to 15;t=t+1
ss ""||t||";6Hcb"||x||".ca"||""||t||";10Hcb"wellfish.x
ss "ca"||t||";31Hcb"||welllbs.x||""||t||";33Hlbs"
ss "ca"||t||";37Hcb"||welloz.x||""||t||";39Hoz"
ss "ca"||t||";45Hc9"||wellpoints.x
end
tr "n2 cfTotal Points >c9"points||"cf Total Fish >c9"Tfish
ss "cfPress A Key>> g1"
call REFRESH
return
MOVE:
if ans="8" then do;
if posY-3<=0 then do;
ss"b1";return;end
posY=posY-1;call NEWDATA
if depth=0 then do;
posY=posY+1;call NEWDATA
ss "b1";return;end
end
if ans="4" then do;
if posX-4<=0 then do;
ss"b1";return;end
posX=posX-1;call NEWDATA
if depth=0 then do;
posX=posX+1;call NEWDATA
ss "b1";return;end
end
if ans="6" then do;
if posX+4>=47 then do;
ss"b1";return;end
posX=posX+1;call NEWDATA
if depth=0 then do;
posX=posX-1;call NEWDATA
ss "b1";return;end
end
if ans="2" then do;
if posY+3>=20 then do;
ss"b1";return;end
posY=posY+1;call NEWDATA
if depth=0 then do;
posY=posY-1;call NEWDATA
ss "b1";return;end
end
if depth ~=0 then tr "4Hcf"||depth*5||"Ft "
else tr "4H cf0 Ft "
if depth = 7 then do; tr "5Hcf"||type.6;end
else tr "5Hcf"||type.type
tr "cf";thatsall=0
call OKOK
marker=left(map.depth,3)||"c5+q1"
ss "5H"||marker||"f0"
call HOT
call TIMECHECK
return
NEWDATA:
hop=posX*3;hop1=hop+1;hop2=hop+2
parse var row.posY +hop type +1
parse var row.posY +hop1 depth +1
parse var row.posY +hop2 hot +1
return
CHANCE:
chance=50
if hot=0 then chance=10
if cwx=2 & depth=1 then chance=25
if lure2=2 & cwx=1 then chance=25
if lure2=5 & cwx=2 then chance=25
if min > depth*5 then do;
chance=0;drag=1;return;end
if lure2=1 then do;
if cwx=2 & depth >=4 then chance=25
if cwx=1 & depth =2 & reel="S" then chance=35
if cwx=2 & depth >=2 & reel="F" then chance=25
if reel="S" & max>depth*5 then do
chance=0;drag=1;return;end
return;end
if lure2=2 then do;
if cwx=1 & depth >=3 then chance=25
if reel="S" & max>depth*5 then do;
chance=0;drag=1;return;end
if reel="F" & depth =6 then chance=25
return;end
if lure2=3 then do;
if cwx=2 & depth >=2 then chance=25
return;end
return
LOADLARGEST:
if exists(path1||"fish.biggest") then do;
call open(big,path1||"fish.biggest","R")
do x = 1 to 17
largest.x = readln(big)
parse var largest.x lbsL.x'+'ozL.x'+'BigL.x'+'BigN.x
end
call close(big)
return;end
ss "Fish.Biggest File Is Missing - Sysop Has Been Notified - w3"
news="Fish.Biggest File Is Missing!!!"
call HERALD;signal QUIT
return
SAVELARGE:
signal off error
call open(big,path1||"fish.biggest","W")
do x = 1 to 17
writeln(big,largest.x)
end
signal on error
call close(big)
return
DISLARGEST:
t=4
tr"f1 cbLargest Fish Caughtn1"
tr" caFish Type cbWeight caLake cbName"
tr"c9-------------------------------------------------------------------------"
do x = 1 to 17;t=t+1
parse var Lfish.x What'+'
ss ""||t||";1Hcb"||What
ss ""||t||";19Hc9"||lbsL.x||""||t||";21Hcalbs"
ss ""||t||";25Hc9"||ozL.x ||""||t||";27Hcaoz"
ss ""||t||";32Hcb"||bigL.x
ss ""||t||";54Hca"||bigN.x
end
return
HERALD:
signal off error
if exists(path1||"fish.news") then do;
call open(herald,path1||"fish.news", "A")
writeln(herald,news)
call close herald
end
if ~exists(path1||"fish.news") then do;
call open(herald,path1||"fish.news", 'W')
writeln(herald,news)
call close herald;end
signal on error
return
LOADLAKE:
ss "f7n1Stocking the Lake..."
call open(ldata,path4||"lakeData"||lake)
do x = 1 to 2
temp = readln(ldata)
end
posY=readln(ldata)
posX=readln(ldata)
do x = 1 to 19
row.x = readln(ldata)
end
call close(ldata)
hop=posX*3;hop1=hop+1;hop2=hop+2
parse var row.posY +hop type +1
parse var row.posY +hop1 depth +1
parse var row.posY +hop2 hot +1
ss"Done"
return
OKOK:
temp=(posX*3)-11;j=5;k=11;start=(posX*3)-11;y=posY-2
do s = 1 to 5
do p = 1 to 9
parse var row.y +start a +1
start=start+3
ss ""||j||";"||k||"H"||map.a
k=k+1;end
y=y+1;j=j+1;start=temp;k=11
end;ss"q1cf"
return
LOADTOURNY:
if exists(path1||"fish.tourny") then do;
call open(tourn,path1||"fish.tourny","R")
do x = 1 to 9
Tname.x = readln(tourn)
Tpoints.x = readln(tourn)
end
end
call close(tourn)
/*x=1;g=0;limit=4;call SORT
pwait=points;nwait=handle;x=4;limit=10;call SORT*/
return
PRESORT:
pwait=points;nwait=handle;x=1;g=0;limit=4;call SORT
pwait=points;nwait=handle;x=4;limit=10;call SORT
return
DISTOURNY:
t=4
tr "f1n2 cbALL TIME POINT LEADERScfn1"
do x = 1 to 3
t=t+1
tr ""||t||";9Hcb"||x||". ca"||Tname.x||""||t||";35Hcb"||Tpoints.x||"ca"||t||";40HPoints"
end
tr "n2 cbBEST SESSIONS OF THE WEEKn1cf"
t=11
do x = 4 to 9
f=f+1;t=t+1
tr ""||t||";9Hcb"||f||". ca"||Tname.x||""||t||";35Hcb"||Tpoints.x||"ca"||t||";40HPoints"
end
f=0;t=0
tr "n1 cbYour Score For This Session: > c9"||points||"q1"
ss "n2 cfPress any Key>> g1f1q1"
return
SAVETOURNY:
if g=1 then do
call open(tourn1,path1||"fish.tourny","W")
signal off error
do x = 1 to 9
writeln(tourn1,Tname.x)
writeln(tourn1,Tpoints.x)
end
signal on error
call close(tourn1)
end
return
SORT:
if x = limit then return
if points < Tpoints.x & handle = Tname.x & x <4 then return
if points >= Tpoints.x & handle = Tname.x then do;
Tpoints.x = points;Tname.x = handle;g=1;return;end
if pwait > Tpoints.x & nwait ~= Tname.x then do;
ptemp = Tpoints.x;ntemp = Tname.x;Tpoints.x = pwait;Tname.x = nwait;g=1
Call SORTMORE;x=x+1;signal SORT;end
x=x+1;signal SORT
return
SORTMORE:
if x + 1 < limit then do;
x=x+1
pwait = Tpoints.x;nwait = Tname.x
Tpoints.x = ptemp;Tname.x = ntemp
x=x-1
end
return
DISPLAY:
ss "f1"
if exists(path3||"lakeMap"||lake) then do;
sf path3||"lakeMap"||lake
call open(Lname,path4||"lakeData"||lake,"R")
display.1 = readln(Lname)
fishlife=readln(Lname)
markerY=readln(Lname)
markerX=readln(Lname)
/*tr ""||markerY||";"||markerX||"Hz1c3+q1" Problem Child */
end;call close(Lname)
thatsall=0
parse var fishlife code.2'+'code.3'+'code.4'+'code.5'+'code.6
code2=code.2;code3=code.3;code4=code.4;code5=code.5;code6=code.6
tr "f05HcaLake: cf"||display.1
tr "5H"||map.0||"q1 - cbLand"
tr "5H"||map.1||"q1 - cb0 cf-cb 10ft"
tr "5H"||map.3||"q1 - cb10 cf-cb 20ft"
tr "5H"||map.5||"q1 - cb20 cf-cb 30ft"
tr "5H"||map.7||"q1 - cbDockn1q1"
tr "45Hc3+q1 - cbBoatn1q1"
tr "45HcaFishlife:"
parse var Lfish.code2 what'+'
tr "45Hcb"what"q1"
parse var Lfish.code3 what'+'
tr "45Hcb"what"q1"
parse var Lfish.code4 what'+'
tr "45Hcb"what"q1"
parse var Lfish.code5 what'+'
tr "45Hcb"what"q1"
parse var Lfish.code6 what'+'
tr "45Hcb"what"q1"
return;end
tr "Map File Does Not Exist - Sysop Informed!"
tr "You will not be able to use the Display Functionw2"
return
REFRESH:
ref=1
tr "q1f1n1cf"
tr " Mini Map Depth"
tr " ____N____ Finder"
tr " | | ________ "
tr " | | | |"
tr " W| |E | |"
tr " | | | |"
tr " |_________| |________|"
tr " S"
tr "5HLake: "||display.1
tr "5HDay : "||wx
tr "5HLure: cf"||lure
if depth ~= 0 then tr "4H"||depth*5||"Ft";
else; tr "4H 0 Ft"
if depth=7 then tr "6Hcf"||type.6
else tr "6Hcf"||type.1
tr "cf"
call OKOK
marker=left(map.depth,3)||"c5+q1"
tr "5H"||marker
return
BOAT:
if Lure = "None" then call picklure
ss "q1f0n5n6"
tr "cer1 ______________ "
tr "cfr1 _____________ |cer1 "
tr "cfr1 | | | ||cer1 "
tr "cfr1 | | | ||cer1 "
tr "cfr1 | | | ||cer1 "
tr "cfr1 | | | ||cer1 "
tr "cfr1 |_____|_|____||cer1 "
tr "cfr1 ______________|cer1 "
tr "cer1 q1"
return
HOT:
if hot=1 then fishes=random(3,6,time('s'))
if hot=0 then fishes=1
return
STRIKE:
if chance >0 & drag ~=1 then do;
p=random(1,100,time('s'))
if chance > p then do;
strike=1;now=random(5,55,time('s'))
end;end
return
CHANCE1:
if lure2=1 | lure2=2 | lure2=3 then do;
if max+3>=depth*5 & reel="S" then do;
p=random(1,100,time('s'))
if p<=25 then drag=1;end;end
if lure2=4 | lure2=6 then do;
if Ldepth+3>=depth*5 then do;
p=random(1,100,time('s'))
if p<=25 then drag=1;end;end
if lure2=4 | lure2=6 then do;
if cwx=2 & Ldepth<=5 then chance =25
if depth=2 then do;
if cwx=1 & Ldepth > (depth*5)-4 then chance=25;end
if depth=3 | depth=4 then do;
if cwx=1 & Ldepth > (depth*5)-8 then chance=25;end
if depth=5 | depth=6 then do;
if cwx=1 & Ldepth > (depth*5)-15 then chance=25;end
end
return
DRAG:
if drag=1 then do;
if lure2=1 | lure2=2 then perc=70
if lure2=3 then perc=30
if lure2=6 then perc=5
Ldepth=max
if lure2=5 | lure2=4 then do;
call SPECIAL;return;end
if type=3 | type=4 | type=5 | type=7 type=8 then do;
p=random(1,100,time('s'))
if p <= perc then do;
p=random(1,100,time('s'))
if p <20 then do;
snagnow=random(1,55,time('s'));snag=1;signal CAST1;end
if type=3 | type=7 then snagit="A Bunch of Weeds"
if type=5 then snagit="Some Lily Pads"
if type=4 | type=8 then snagit="A Piece of Wood"
call SPECIAL
end
end
end
call STRIKE
return
SPECIAL:
if lure2=5 then return
tire=0
p=random(1,100,time('s'))
if p > 75 then do;
p=random(1,13,time('s'))
if p=1 then snagit="Jimmy Hoffa's Body!"
if p=2 then snagit="A Campbell Soup Can"
if p=3 then snagit="A Fishing Rod"
if p=4 then snagit="A Rusty Lure"
if p=5 then snagit="A Old Fishing Net"
if p=6 then snagit="A Women's Shoe"
if p=7 then snagit="A Bundle of Fishline"
if p=8 then snagit="A Commodore 64"
if p=9 then snagit="An Unknown Bone"
if p >=10 then do;
code9=17;snagit=0
parse var Lfish.17 cfish'+'cfishwt'+'cfishwm
p=random(1,100,time('s'))
if p<=20 then do;
news="Trophy Alert!!!";call HERALD
cfishwtl=random(cfishwt,cfishwm,time('s'))
cfishwto=random(1,15,time('s'))
hook=1;tire=1
return;end
cfishwtl=random(1,cfishwt,time('s'))
cfishwto=random(1,15,time('s'))
hook=1;tire=1
return;end
end
return
CAST:
call TIMECHECK
tr "1Hq1cb[Q]uit Retrieve = [S]low or [F]ast ?"
Ldepth=0;now=0;strike=0;snagit=0;s=0;snag=0;snagnow=0;drag=0
getchar
reel=upper(result)
if reel="Q" then do;signal GOFISHMENU;end
if reel="#" then signal DROP
if lure2=4 | lure2=6 then do;
if reel="F" | reel="S" then do;
min=0;Ldepth=0;signal VARIE;end;end
if reel="F" then do;
speed=20;call CHANCE;call CHANCE1;call DRAG
signal CAST1;end
if reel="S" then do;
speed=40;call CHANCE;call CHANCE1;call DRAG
signal CAST1;end
signal CAST
LOSTLURE:
bufferflush
tr "25H Snag!!! You Lose Your Lure!w2"
lure="None";call refresh;signal GOFISHMENU
CAST1:
call TIMECHECK
ss"17Hcer1------------------------------------------------------------"
ss "q1cb1H[A]bort [H]ook [R]etreiveq1"
x=61
if reel="F" then do
Ldepth=min
speed=25
if min>depth*5 then Ldepth=depth*5
end
if reel="S" then do
Ldepth=max
speed=50
if max>depth*5 then Ldepth=depth*5
end
tr"55H"||Ldepth||"57HFt"
signal IOROUTINE
VARIE:
if reel="F" then speed=20
if reel="S" then speed=40
ss"17Hcer1------------------------------------------------------------"
ss "q1cb1H[A]bort [H]ook [R]etreiveq1"
x=61
do p = 1 to 200
nop;end
min=min+1;Ldepth=min
tr"55H"||LDepth||"57HFt"
if Ldepth = depth*5 then do;
drag=1;call CHANCE;call CHANCE1;
call DRAG;signal IOROUTINE;end
CHECKIO;if result=1 then do;
getchar;key=upper(result)
if key="R" then do;
call CHANCE;call CHANCE1;call DRAG
x=61;signal IOROUTINE;end
if key="#" then signal DROP
end
signal VARIE
IOROUTINE:
CHECKIO;If result=1 then call key
do i=1 to speed
nop
end
signal IOROUTINE
KEY:
getchar
key=upper(result)
if key="R" then do;
x=x-1
if x=0 then do
x=61
if snagit ~=0 then do
bufferflush;tr "25H You Pulled Up "||snagit||"w2";end
if hook=1 then do;
hook=0;signal CALCULATE;end
ss"q1";bufferflush;ss"f0";call BOAT;signal CAST;end
if hook=1 & cfishwtl>15 & tire~=1 then do;
p=random(1,100,time('s'))
if p<20 then call PULLING;end
if x=snagnow & snag=1 then signal LOSTLURE
if x=now & strike=1 then do;call HOOK;x=x+1;strike=0;signal IOROUTINE;end
i=x+16;ss""||i||"Hcer1 "
end
if key="A" then do;
call BOAT;signal CAST;end
if key="#" then signal DROP
return
CALCULATE:
p=0
cpoints=((cfishwtl/cfishwm)*100)%1
points=points+cpoints
Tfish=Tfish+1;thatsall=thatsall+1
if thatsall=fishes then do;
hot="0"
row.posY = overlay('0',row.posY,posX*3+3,1)
end
parse var Lfish.code9 what '+'
tr "25Hcer1"||what||"q1"
tr "25Hcer1"||cfishwtl||"lbs"
tr "32Hcer1"||cfishwto||"ozw1q1"
code20=cfish;code30=cfishwtl;code40=cfishwto;code50=cpoints
do p=1 to 15
if cpoints > wellpoints.p then do;
temp1=wellfish.p;temp2=welllbs.p;temp3=welloz.p;temp4=wellpoints.p
wellfish.p=cfish;welllbs.p=cfishwtl;welloz.p=cfishwto
wellpoints.p=cpoints
cfish=temp1;cfishwtl=temp2;cfishwto=temp3;cpoints=temp4
end
end
if code30 > lbsL.code9 then do;
lbsL.code9=code30
ozL.code9=code40
BigL.code9=display.1
BigN.code9=handle
largest.code9=code30||"+"||code40||"+"||display.1||"+"||handle
record=1
news="Caught A Record Breaker!!!";call HERALD
end
if code30 = lbsL.code9 then do;
if code40 > ozL.code9 then do;
lbsL.code9=code30
ozL.code9=code40
BigL.code9=display.1
BigN.code9=handle
largest.code9=code30||"+"||code40||"+"||display.1||"+"||handle
record=1
news="Caught A Record Breaker!!!";call HERALD;end
end
call BOAT
signal CAST
PULLING:
r=x
bufferflush
tr"25HWhirrrrr! "
do p = 1 to 5
r=r+1;w=r+16;ss""||w||"H-"
end
x=x+5
if x>59 then do;
tr "15HLost 'em!!! "
hook=0;signal CAST;end
CHECKIO;if result=1 then do;getchar;ans=upper(result)
if ans="#" then signal DROP
if ans="R" then do;
p=random(1,100,time('s'))
if p<15 then do;
strike=0;hook=0
tr"25HLost 'em!!! "
x=x+2
signal IOROUTINE;end
end
end
return
HOOKEDEM:
hook=1
p=random(2,6,time('s'))
code9=code.p
parse var Lfish.code9 cfish'+'cfishwt'+'cfishwm
p=random(1,100,time('s'))
if p <= 15 then do;
news="Trophy Alert!!!";call HERALD
cfishwtl=random(cfishwt,cfishwm,time('s'))
cfishwto=random(1,15,time('s'))
return;end
cfishwtl=random(1,cfishwt,time('s'))
cfishwto=random(1,15,time('s'))
return;end
HOOK:
bufferflush
tr "25HStrike! "
do p =1 to 75
CHECKIO;if result=1 then do;
getchar
ans=result
if ans="#" then signal DROP
if ans="H" then do;
tr"25HHooked 'em! "
call HOOKEDEM;return;end;end
end
ss"25HMissed 'em!"
return
DATA:
Lfish.1="Largemouth Bass+9+22";Lfish.2="Smallmouth Bass+5+11"
Lfish.3="Striped Bass+20+59";Lfish.4="Lake Trout+20+65"
Lfish.5="Brown Trout+15+33";Lfish.6="Rainbow Trout+8+19"
Lfish.7="King Salmon+15+31";Lfish.8="Coho Salmon+15+31"
Lfish.9="Channel Catfish+25+58";Lfish.10="Muskellunge+28+69"
Lfish.11="Walleye+11+25";Lfish.12="Northern Pike+17+46"
Lfish.13="White Bass+3+5";Lfish.14="Bluegill+2+4";Lfish.15="Crappie+3+6"
Lfish.16="Yellow Perch+2+4";Lfish.17="Goodyear Tire+20+60"
lure.1="Shallow Crankbait";lure.2="Deep Crankbait "
lure.3="Slim Minnow ";lure.4="Bottom Bait ";Tfish=0
lure.5="Surface Plug ";lure.6="Spinner Bait ";map.1="z2 "
lastplay="";timetogo=0;ref=0;lure="None";chance=50
type.1="5H Rocky 5H Bottom 25HOpen Water"
type.2="5H Sandy 5H Bottom 25HOpen Water"
type.3="5H Weeds 5H 25H Weeds "
type.4="5H Logs 5H 25HOpen Water"
type.5="5HLily Pad5H Stems 25HLily Pads "
type.6="5H *Dock* 5H 25H *Dock* "
type.7="5H Weeds 5H 25HOpen Water"
type.8="5H Sunken 5H Vessel 25HOpen Water"
map.2="z7 ";map.3="z6 ";map.5="z4 ";map.0="z2 "
map.1="z7 ";map.4="z6 ";map.6="z4 ";map.7="z1 "
points=0;f=0;wx.1="Cloudy ";wx.2="Sunny "
do x = 1 to 15;wellfish.x="None";welllbs.x=0;welloz.x=0;wellpoints.x=0;end
return
QUIT:
news = "<<Leaving>>n1c9--------------------------------------------------------"
call HERALD
call SAVEUSER
if points ~= 0 then do;
call PRESORT
call SAVETOURNY
if record=1 then do;
call SAVELARGE;end
end
tr "n3 Returning to "||BBS
exit
DROP:
news = "<<Dropped Carrier>>n1c9---------------------------------------------------------"
call HERALD
call SAVEUSER
/*Butthead dropped carrier - Not Saving ANYTHING He Caught!!!*/
exit
ERROR:
logentry "Freshwater Fish Sim ERROR Line: "||SIGL
Tr "Program Error - Error in Line" SIGL
tr "Sysop Informed"
exit
IOERR:
logentry "Freshwater Fish Sim IOERR Line: "||SIGL
Tr "IO Error - Error in Line" SIGL
tr "Sysop Informed"
exit
SYNTAX:
logentry "Freshwater Fish Sim ERROR Line: "||SIGL||" Code: "||RC
Tr "Syntax Error - Error in Line" SIGL' error code: ' RC
tr "Sysop Informed"
exit